﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

/// <summary>
/// Descripción breve de Iva
/// </summary>
public class Iva : Conexion
{
    private int id;
    private int porcentaje;
    private String descripcion;
    private String estado;

    public Iva()
    {
    }

    /**
     * Registra un iva en la base de datos
     */
    public void Guardar()
    {
        SentenciaSQL = "insert into iva(id_iva, porcentaje, descripcion, estado) values(nextval('sq_iva'), '" + Porcentaje + "','" + Descripcion + "', '" + Estado + "');";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudo registrar", ex);
        }
        finally
        {
            CerrarConexion();
        }
    }


    /**
     * Actualiza los datos 
     */
    public void Actualizar()
    {
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            SentenciaSQL = "update iva set descripcion = '" + Descripcion + "', porcentaje = '" + Porcentaje + "' where id_iva = " + Id + ";";
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al intentar modificiar", ex);
        }
        finally
        {
            CerrarConexion();
        }

    }

    /*
    * Borra
    * Cambia el estado a 'b' -> borrado
    */
    public void Borrar()
    {
        SentenciaSQL = "update iva set estado = 'b' where id_iva = " + Id + " ;";

        AbrirConexion();
        IniciarTransaccion();
        try
        {
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudo eliminar", ex);
        }
        finally
        {
            CerrarConexion();
        }
    }
    /**
     * Lista todo los IVAs
     */
    public DataSet Listar()
    {
        DataSet ds = new DataSet();

        SentenciaSQL = "select * from iva where estado <> 'b' order by porcentaje;";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            ds = EjecutarComandoDataSet();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudieron listar los ivas", ex);
        }
        finally
        {
            CerrarConexion();
        }

        return ds;

    }

    /**
    * Busca segun parametros
    * @param porc porcentaje
    * @param desc descripcion
    * @returm dataset con el resultado de la busqueda
    */
    public DataSet Buscar(int porc, string desc)
    {
        DataSet ds = new DataSet();

        SentenciaSQL = "select * from iva where estado <> 'b' and porcentaje = " + porc + " and descripcion like '%" + desc + "%';";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            ds = EjecutarComandoDataSet();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al realizar la busqueda", ex);
        }
        finally
        {
            CerrarConexion();
        }

        return ds;

    }

    public int Id
    {
        get { return this.id; }
        set { this.id = value; }
    }

    public int Porcentaje
    {
        get { return this.porcentaje; }
        set { this.porcentaje = value; }

    }
    public String Descripcion
    {
        get { return this.descripcion; }
        set { this.descripcion = value; }
    }

    public String Estado
    {
        get { return this.estado; }
        set { this.estado = value; }
    }
}
